import axios from "axios";
import config from "../config";
import { ElMessage } from "element-plus";
const NETWORK_ERROR = "请求失败;";

//创建一个axios对象
const service = axios.create({
  baseURL: config.baseApi,
  timeout: 2000,
});

//在请求之前做一些事情
service.interceptors.request.use((req) => {
  //可以自定义 header  jwt-token认证的时候
  return req;
});

//请求之后
service.interceptors.response.use((res) => {
  //这是需要的数据
  const { code, data, msg } = res.data;
  if (code == 200) {
    //视情况而定
    return data;
  } else {
    //如果有mes就返回  没有就返回newWork_error
    ElMessage.error(msg || NETWORK_ERROR);
    return Promise.reject(msg || NETWORK_ERROR);
  }
});

//封装的核心函数
function request(options) {
  options.method = options.method || "get"
  if (options.method.toLowerCase() == "get"|| options.method.toLowerCase() == 'delete') {
    options.params= options.data;
  }

  //对mock的处理
  let isMock = config.mock //取得总体mock  
  
  if (typeof options.mock != "undefined") {
    isMock = options.mock; //其中一个接口不想用mock
  }

  //对线上环境做处理
  if (config.env == "prod") {
    //如果是线上环境 就不给用mock
    service.defaults.baseURL = config.baseApi;
  } else {
    service.defaults.baseURL = isMock ? config.mockApi : config.baseApi;
  }

  return service(options);
}

export default request
